To enable operation, a “distributed object store” that comprises a network of memory drives generally uses sophisticated metadata to manage different aspects of stored object data. A few of the aspects managed by the metadata may include growth or shrinkage of an object, data location, data management policies corresponding to the object (e.g., whether duplicate copies are warranted), object-versioning corresponding to the immutable nature of object store, tracking of a location of the object data on the data store given an object ID, etc. Further, objects may have to be moved around within the object store (e.g., in the event of a partial failure in the distributed system).
A distributed object store will typically store multiple metadata objects corresponding to the same data object to help manage the different aspects of the data object. Further, a distributed object store may employ caching of metadata to stay performant as the size of the object store scales, as performance may be improved by simply caching frequently accessed metadata due to the fact that accessing the cache is generally significantly faster than accessing the media where the object resides.
However, when scaling, effectiveness of the cache decreases as the working set (e.g., number and size of data objects and metadata objects) increases. That is, a cache may become less effective as “hot” (e.g., frequently accessed) items repeatedly evict one another, thereby resulting in a phenomenon known as “cache thrashing.” Cache thrashing may affect performance of the I/O path as the working set increases, and therefore may be a more significant problem for large scale distributed object stores.